Fix the gzip size extraction in xc_inflate_buffer(). Extract
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 17 Mar 2006 10:44:55 +0000 (11:44 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 17 Mar 2006 10:44:55 +0000 (11:44 +0100)
bytes as unsigned quantities.

Signed-off-by: David Lively <dlively@virtualiron.com>
tools/libxc/xg_private.c

index 65aae5de500fe8f304a8ba587b53b62491f398d6..d86b9b10b7c615c1a0106cc6c0a68ec649851520 100644 (file)
@@ -77,10 +77,11 @@ char *xc_inflate_buffer(const char *in_buf, unsigned long in_size,
         return (char *)in_buf;
     }
 
-    out_len = in_buf[in_size-4] +
-        (256 * (in_buf[in_size-3] +
-                (256 * (in_buf[in_size-2] +
-                        (256 * in_buf[in_size-1])))));
+    out_len = (unsigned char)in_buf[in_size-4] +
+        (256 * ((unsigned char)in_buf[in_size-3] +
+                (256 * ((unsigned char)in_buf[in_size-2] +
+                        (256 * (unsigned char)in_buf[in_size-1])))));
+
     bzero(&zStream, sizeof(zStream));
     out_buf = malloc(out_len + 16);        /* Leave a little extra space */
     if ( out_buf == NULL )